# -*- coding: utf-8 -*-
#autor: Sergio Sardo
#data : 28 de outubro de 2013
#obs  : Programa que importa dados de ficheiro xls e grava numa bd

from xlrd import open_workbook
import sqlite3
'''
Abrir livroXLS, no primeiro Book
'''
book = open_workbook('cna131fresultados.xls')
print book
sheet = book.sheet_by_index(0)

'''
Ligacao a BD resultados.db
'''
conexao = sqlite3.connect('resultados.db')
c = conexao.cursor()

print "Nome do Livro: ", sheet.name
print "Linhas: ", sheet.nrows
print "Colunas: ", sheet.ncols
print"------------------------------"

'''
lista e uma lista completa dos dados da BD
lista_aux e uma lista auxiliar que guarda uma linha por iteracao
'''
lista = []
lista_aux = []

'''
percorre toda a folha de calculo, linha a linha
guarda os valores de cada celula numa lista auxiliar lista_aux
guarda em cada iteracao, uma nova linha na lista "lista"
'''
for row_index in range(sheet.nrows):
    for col_index in range(sheet.ncols):
        u = sheet.cell(row_index, col_index).value
        lista_aux.append(u)
    lista.append(lista_aux)
    lista_aux = []
    
'''
lista_final contem os dados da folhaXLS filtrados, elimina dados nao uteis
'''
lista_final =[]

'''
filtro de dados uteis. remove cabeçalhos da folhaXLS e somatorios
'''
for linhas in range(3,len(lista)):
    if (lista[linhas][2] != ''):
        lista_final.append(lista[linhas])

'''
operacoes na base de dados com sqlite3
elimina tabela se ja existir; cria a tabela com os campos necessarios;
coloca os valores da lista_final
'''
c.execute('DROP TABLE IF EXISTS dados')
c.execute('CREATE TABLE dados (cod_inst INTEGER, cod_curso INTEGER, nome TEXT, curso TEXT, grau TEXT, vagas INTEGER, colocados INTEGER, nota_ultimo FLOAT, vagas_sob INTEGER)')
conexao.commit()
c.executemany('INSERT INTO dados VALUES(?,?,?,?,?,?,?,?,?)', lista_final)
conexao.commit()
conexao.close()

print "Linhas db: ",len(lista_final)
print "Colunas db: ",len(lista_final[0])
